// 导入mobx的makeAutoObservable方法
// computed是计算属性，用于根据先有数据计算出新的数据
import { makeAutoObservable,computed } from "mobx";

// 定义一个类
class StudentStore{
    // 定义学生数组
    students=[
        {id:1,name:'张三',age:22,sex:'男'},
        {id:2,name:'李四',age:24,sex:'女'},
        {id:3,name:'王五',age:25,sex:'男'},
        {id:4,name:'刘六',age:27,sex:'女'}
    ]
    // 构造函数
    constructor() {
        // 对CounterStore类型的对象进行全局自动响应式处理
        makeAutoObservable(this,{
            // 将avgAge属性，注册为计算属性，这样它就具备了响应式能力
            avgAge:computed
        })
    }

    // 定义属性(ES6语法)
    get avgAge(){
        let total = this.students.reduce((a,b)=>a+b.age,0)
        return (total/this.students.length).toFixed(1)
    }

    // 添加学生
    addStudent=(stu)=>{
        this.students.push(stu)
    }
    // 删除学生
    delStudent=(id)=>{
        let index = this.students.findIndex(item=> item.id === id)
        this.students.splice(index,1)
    }
    // 修改学生
    updateStudent=(stu)=>{
        let index = this.students.findIndex(item=> item.id === stu.id)
        this.students[index] = stu
    }
}

// 创建一个StudentStore对象
const studentStore = new StudentStore()

export default studentStore
